package com.hehe.conversion.hehemiddleware.model.resp.bill;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

@Data
public class VatCommonDetail {
    @JsonProperty("code")
    private String code; // 印刷发票代码

    @JsonProperty("number")
    private String number; // 印刷发票号码

    @JsonProperty("code_confirm")
    private String codeConfirm; // 机打发票代码

    @JsonProperty("number_confirm")
    private String numberConfirm; // 机打发票号码

    @JsonProperty("date")
    private String date; // 开票日期

    @JsonProperty("pretax_amount")
    private String pretaxAmount; // 税前金额合计

    @JsonProperty("total")
    private String total; // 价税合计（小写）

    @JsonProperty("total_cn")
    private String totalCn; // 价税合计（大写）

    @JsonProperty("tax")
    private String tax; // 税额合计

    @JsonProperty("check_code")
    private String checkCode; // 校验码

    @JsonProperty("machine_code")
    private String machineCode; // 机器编号

    @JsonProperty("seller")
    private String seller; // 销售方名称

    @JsonProperty("seller_tax_id")
    private String sellerTaxId; // 销售方纳税人识别号

    @JsonProperty("seller_addr_tel")
    private String sellerAddrTel; // 销售方地址、电话

    @JsonProperty("seller_bank_account")
    private String sellerBankAccount; // 销售方开户行及账号

    @JsonProperty("buyer")
    private String buyer; // 购买方名称

    @JsonProperty("buyer_tax_id")
    private String buyerTaxId; // 购买方纳税人识别号

    @JsonProperty("buyer_bank_account")
    private String buyerBankAccount; // 购买方开户行及账号

    @JsonProperty("buyer_addr_tel")
    private String buyerAddrTel; // 购买方地址、电话

    @JsonProperty("company_seal")
    private String companySeal; // 是否有公司印章（0: 没有; 1: 有）

    @JsonProperty("company_seal_mark")
    private String companySealMark; // 是否有销售方（章）标记（0: 没有; 1: 有）

    @JsonProperty("form_type")
    private String formType; // 发票是第几联

    @JsonProperty("form_name")
    private String formName; // 发票联次

    @JsonProperty("kind")
    private String kind; // 发票消费类型

    @JsonProperty("ciphertext")
    private String ciphertext; // 密码区（四行密码，每行以逗号隔开）

    @JsonProperty("travel_tax")
    private String travelTax; // 车船税

    @JsonProperty("receiptor")
    private String receiptor; // 收款人

    @JsonProperty("reviewer")
    private String reviewer; // 复核

    @JsonProperty("issuer")
    private String issuer; // 开票人

    @JsonProperty("province")
    private String province; // 省

    @JsonProperty("city")
    private String city; // 市

    @JsonProperty("service_name")
    private String serviceName; // 服务类型

    @JsonProperty("remark")
    private String remark; // 备注

    @JsonProperty("item_names")
    private String itemNames; // 品名（每个以逗号隔开）

    @JsonProperty("agent_mark")
    private String agentMark; // 是否代开

    @JsonProperty("acquisition_mark")
    private String acquisitionMark; // 是否收购

    @JsonProperty("block_chain")
    private String blockChain; // 区块链标记

    @JsonProperty("electronic_mark")
    private String electronicMark; // 是否为电子增票

    @JsonProperty("transit_mark")
    private String transitMark; // 通行费标志（1 通行费  2 无“通行费”字样，通行费明细）

    @JsonProperty("oil_mark")
    private String oilMark; // 成品油标志

    @JsonProperty("vehicle_mark")
    private String vehicleMark; // 机动车标志

    @JsonProperty("title")
    private String title; // 标题

    @JsonProperty("electronic_number")
    private String electronicNumber; // 全电发票号码（当存在该字段时移除 ciphertext）

    @JsonProperty("stamp_info")
    private String stampInfo; // 销售方(章)

    @JsonProperty("producer_stamp")
    private String producerStamp; // 监制章

    @JsonProperty("items")
    private List<Item> items; // 发票项目列表

    @Data
    public static class Item {
        @JsonProperty("name")
        private String name; // 货物或应税劳务、服务名称

        @JsonProperty("specification")
        private String specification; // 规格型号

        @JsonProperty("unit")
        private String unit; // 单位

        @JsonProperty("quantity")
        private String quantity; // 数量

        @JsonProperty("price")
        private String price; // 单价

        @JsonProperty("total")
        private String total; // 金额

        @JsonProperty("tax_rate")
        private String taxRate; // 税率

        @JsonProperty("tax")
        private String tax; // 税额
        // Getters and Setters
    }

}
